﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Project.Core;

namespace TLS
{
    public class Arma : Sprite
    {
        private Game1 game;
        public Animacion ACaminandoDerecha;
        public Animacion ACaminandoIzquierda;
        public Animacion AParadoDerecha;
        public Animacion AParadoIzquierda;
        public Animacion ASaltandoDerecha;
        public Animacion ASaltandoIzquierda;
        public Disparo objDisparo; 

        public enum Estados
        {
            CAMINANDO, SALTANDO, PARADO
        }
        public Estados Estado { get; set; }
        public enum Direcciones
        {
            IZQUIERDA, DERECHA
        }
        public Direcciones Direccion { get; set; }

        public Arma(Game1 game)
            : base(null)
        {
            this.game = game;
            objDisparo = new Disparo(this.game);
            //Cargamos imagenes de Kaled mirando a la izquierda
            Texture2D Kaled00i = game.Content.Load<Texture2D>("arma/detenido_al");
            Texture2D Kaled01i = game.Content.Load<Texture2D>("arma/caminando_al01");
            Texture2D Kaled02i = game.Content.Load<Texture2D>("arma/caminando_al02");
            Texture2D Kaled03i = game.Content.Load<Texture2D>("arma/caminando_al03");
            Texture2D Kaled04i = game.Content.Load<Texture2D>("arma/caminando_al04");
            Texture2D Kaled05i = game.Content.Load<Texture2D>("arma/caminando_al05");
            Texture2D Kaled06i = game.Content.Load<Texture2D>("arma/caminando_al06");
            Texture2D Kaled07i = game.Content.Load<Texture2D>("arma/caminando_al07");
            Texture2D Kaled08i = game.Content.Load<Texture2D>("arma/caminando_al08");
            Texture2D Kaled09i = game.Content.Load<Texture2D>("arma/caminando_al09");
            Texture2D Kaled10i = game.Content.Load<Texture2D>("arma/caminando_al10");
            //Saltando
            Texture2D Kaled11i = game.Content.Load<Texture2D>("arma/saltando_al01");
            Texture2D Kaled12i = game.Content.Load<Texture2D>("arma/saltando_al02");
            Texture2D Kaled13i = game.Content.Load<Texture2D>("arma/saltando_al03");
            Texture2D Kaled14i = game.Content.Load<Texture2D>("arma/saltando_al04");



            //Cargamos imagenes de Kaled mirando a la derecha
            Texture2D Kaled00d = game.Content.Load<Texture2D>("arma/detenido_ar");
            Texture2D Kaled01d = game.Content.Load<Texture2D>("arma/caminando_ar01");
            Texture2D Kaled02d = game.Content.Load<Texture2D>("arma/caminando_ar02");
            Texture2D Kaled03d = game.Content.Load<Texture2D>("arma/caminando_ar03");
            Texture2D Kaled04d = game.Content.Load<Texture2D>("arma/caminando_ar04");
            Texture2D Kaled05d = game.Content.Load<Texture2D>("arma/caminando_ar05");
            Texture2D Kaled06d = game.Content.Load<Texture2D>("arma/caminando_ar06");
            Texture2D Kaled07d = game.Content.Load<Texture2D>("arma/caminando_ar07");
            Texture2D Kaled08d = game.Content.Load<Texture2D>("arma/caminando_ar08");
            Texture2D Kaled09d = game.Content.Load<Texture2D>("arma/caminando_ar09");
            Texture2D Kaled10d = game.Content.Load<Texture2D>("arma/caminando_ar10");
            //Saltando
            Texture2D Kaled11d = game.Content.Load<Texture2D>("arma/saltando_ar01");
            Texture2D Kaled12d = game.Content.Load<Texture2D>("arma/saltando_ar02");
            Texture2D Kaled13d = game.Content.Load<Texture2D>("arma/saltando_ar03");
            Texture2D Kaled14d = game.Content.Load<Texture2D>("arma/saltando_ar04");

            //Animacion Kaled caminando a la izquierda
            ACaminandoIzquierda = new Animacion();
            ACaminandoIzquierda.agregarFrame(Kaled01i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled02i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled03i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled04i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled05i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled06i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled07i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled08i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled09i, 200);
            ACaminandoIzquierda.agregarFrame(Kaled10i, 200);
            //saltando
            ASaltandoIzquierda = new Animacion();
            ASaltandoIzquierda.agregarFrame(Kaled11i, 350);
            ASaltandoIzquierda.agregarFrame(Kaled12i, 350);
            ASaltandoIzquierda.agregarFrame(Kaled13i, 350);
            ASaltandoIzquierda.agregarFrame(Kaled14i, 350);
            //Animacion Kaled caminando a la derecha
            ACaminandoDerecha = new Animacion();
            ACaminandoDerecha.agregarFrame(Kaled01d, 200);
            ACaminandoDerecha.agregarFrame(Kaled02d, 200);
            ACaminandoDerecha.agregarFrame(Kaled03d, 200);
            ACaminandoDerecha.agregarFrame(Kaled04d, 200);
            ACaminandoDerecha.agregarFrame(Kaled05d, 200);
            ACaminandoDerecha.agregarFrame(Kaled06d, 200);
            ACaminandoDerecha.agregarFrame(Kaled07d, 200);
            ACaminandoDerecha.agregarFrame(Kaled08d, 200);
            ACaminandoDerecha.agregarFrame(Kaled09d, 200);
            ACaminandoDerecha.agregarFrame(Kaled10d, 200);
            //saltando
            ASaltandoDerecha = new Animacion();
            ASaltandoDerecha.agregarFrame(Kaled11d, 350);
            ASaltandoDerecha.agregarFrame(Kaled12d, 350);
            ASaltandoDerecha.agregarFrame(Kaled13d, 350);
            ASaltandoDerecha.agregarFrame(Kaled14d, 350);
            //Animacion Kaled parado a la izquierda
            AParadoIzquierda = new Animacion();
            AParadoIzquierda.agregarFrame(Kaled00i, 200);
            //Animacion Kaled parado a la derecha
            AParadoDerecha = new Animacion();
            AParadoDerecha.agregarFrame(Kaled00d, 200);

            //Animacion por defecto
            base.animacion = AParadoDerecha;
        }

        public override void actualizar(long tiempo)
        {
            switch (Direccion)
            {
                case Direcciones.IZQUIERDA:
                    switch (Estado)
                    {
                        case Estados.CAMINANDO:
                            base.animacion = ACaminandoIzquierda;
                            break;
                        case Estados.PARADO:
                            base.animacion = AParadoIzquierda;
                            break;
                        case Estados.SALTANDO:
                            base.animacion = ASaltandoIzquierda;
                            break;
                    }
                    break;
                case Direcciones.DERECHA:
                    switch (Estado)
                    {
                        case Estados.CAMINANDO:
                            base.animacion = ACaminandoDerecha;
                            break;
                        case Estados.PARADO:
                            base.animacion = AParadoDerecha;
                            break;
                        case Estados.SALTANDO:
                            base.animacion = ASaltandoDerecha;
                            break;
                    }
                    break;
            }
            base.actualizar(tiempo);
        }

        private void morir()
        {

        }

        public override void evento_ColisionVerticalTile()
        {

            base.evento_ColisionVerticalTile();
        }
    }
}
